맨위로가기

심볼릭 링크

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

심볼릭 링크는 다른 파일이나 디렉토리를 가리키는 파일의 일종으로, POSIX 호환 운영 체제에서 `symlink` 시스템 호출을 통해 생성된다. 심볼릭 링크는 대상 파일에 대한 별칭 역할을 하며, `ln -s` 명령어를 통해 생성할 수 있다. 심볼릭 링크는 초기에는 대상 파일의 텍스트 참조를 저장하는 방식으로 구현되었으나, 성능 향상을 위해 대상 경로를 데이터 구조 내에 저장하는 '빠른 심볼릭 링크' 방식이 도입되었다. 윈도우는 심볼릭 링크, NTFS 정션, 바로 가기 등 다양한 링크 기능을 제공하며, Cygwin 환경에서도 POSIX 호환 심볼릭 링크를 시뮬레이션할 수 있다. 이 외에도 CTSS, Amiga, macOS, OS/2, BTRON 등 다양한 운영체제에서 심볼릭 링크와 유사한 기능을 제공하며, 심볼릭 링크는 가변적인 방식으로 구현되어 다양한 대상을 가리키도록 할 수 있다.

더 읽어볼만한 페이지

  • 파일 시스템 - 부트 섹터
    부트 섹터는 시스템 부팅 코드를 담은 저장 매체의 특정 영역으로, 볼륨 부트 레코드(VBR)와 마스터 부트 레코드(MBR)로 나뉘며, BIOS는 이를 실행하고 UEFI는 부트로더를 직접 로드하지만 바이러스 공격에 취약하다.
  • 파일 시스템 - ZFS
    ZFS는 Jeff Bonwick 등이 설계하고 구현한 파일 시스템으로, 데이터 무결성, 스냅샷, RAID-Z 등의 기능을 제공하며, 썬 마이크로시스템즈에서 개발되어 OpenZFS 프로젝트를 통해 다양한 운영체제에서 사용된다.
심볼릭 링크
파일 시스템 정보
종류파일
정의다른 파일이나 디렉터리를 가리키는 파일
기능
주 목적파일 시스템 내에서 파일이나 디렉터리에 대한 간접적인 참조 제공
사용원래 위치와 다른 위치에서 파일에 접근하거나, 여러 위치에서 동일한 파일을 참조하는 데 사용
종류
유닉스 계열심볼릭 링크 (soft link)
윈도우 NT 계열바로 가기 파일, 리파스 포인트를 이용한 심볼릭 링크
특징
대상다른 파일이나 디렉터리
동작 방식링크를 열 때 대상 파일이나 디렉터리로 연결
삭제링크 파일 자체를 삭제해도 원본 파일에는 영향 없음
원본 삭제원본 파일이 삭제되면 링크는 깨짐 (broken link)
장점
유연성파일 시스템의 물리적 구조에 독립적
공간 효율성실제 파일 데이터를 복사하지 않으므로 디스크 공간 절약
관리 용이성여러 위치에서 동일한 파일을 참조하고 관리 용이
단점
깨진 링크원본 파일 삭제 시 링크가 깨질 수 있음
성능파일 접근 시 추가적인 탐색 과정 필요
보안보안상의 취약점 발생 가능성 존재
예시
유닉스 명령어ln -s [원본 파일] [링크 파일]
윈도우 명령어mklink [링크 파일] [원본 파일] (관리자 권한 필요)

2. POSIX 및 유닉스 계열 운영 체제

POSIX 호환 운영 체제에서는 `symlink`[6] 시스템 호출을 사용하여 심볼릭 링크를 만든다. ln 셸 명령어는 보통 하드 링크를 만드는 `link`[7] 시스템 호출을 사용하지만, `ln -s` 플래그를 사용하면 `symlink()` 시스템 호출을 통해 심볼릭 링크를 생성한다. 심볼릭 링크는 1982년 4.1a BSD 유닉스에서 U.C. 버클리에 의해 도입되었다.[8]

명령 줄 인터페이스(셸)에서 심볼릭 링크를 만드는 명령어는 다음과 같다.



ln -s target_path link_path



`target_path`는 심볼릭 링크가 가리킬 상대 또는 절대 경로이다. 보통 대상은 존재하지만, 존재하지 않는 대상을 가리키는 심볼릭 링크를 만들 수도 있다. `link_path`는 심볼릭 링크의 경로이다.

심볼릭 링크는 대상 파일이나 디렉터리의 별칭처럼 작동한다. `cp`, `rm` 등의 시스템 관리 명령을 심볼릭 링크에 사용할 수 있다. 읽기/쓰기 명령은 대상 파일의 내용에 접근하게 한다. 그러나 `rm` 명령은 대상 파일이 아닌 링크 자체를 제거한다.

ls에서 긴 디렉터리 보기 옵션(-l)을 사용하면 심볼릭 링크가 이름 뒤의 화살표와 함께 대상 파일을 가리키는 것을 볼 수 있다. 디렉터리를 가리키는 심볼릭 링크의 목록을 요청하면 링크 자체만 표시된다. 링크된 디렉터리 내용을 보려면 경로 뒤에 `/` 구분자를 추가해야 한다.

심볼릭 링크는 텍스트 문자열을 포함하며, 운영 체제에 의해 자동으로 해석되어 다른 파일이나 디렉터리로 가는 경로로 사용된다. 이 파일 또는 디렉터리를 "대상"이라고 한다. 심볼릭 링크는 대상과 독립적으로 존재하는 두 번째 파일이다. 심볼릭 링크가 삭제되어도 대상은 영향을 받지 않는다. 대상이 이동, 이름 변경 또는 삭제되면 심볼릭 링크는 자동으로 업데이트되지 않고, 이전 대상을 계속 가리키게 된다. 이러한 심볼릭 링크를 "끊어진", "고아", "죽은" 또는 "매달린" 심볼릭 링크라고 한다.

심볼릭 링크는 하드 링크와 다르다. 하드 링크는 다른 볼륨이나 파일 시스템의 경로를 연결할 수 없지만, 심볼릭 링크는 볼륨에 관계없이 모든 파일이나 디렉터리를 가리킬 수 있다. 하드 링크는 항상 기존 파일을 참조하지만, 심볼릭 링크는 존재하지 않는 경로를 포함할 수도 있다.

NEWS-OS(en)는 환경 변수나 커널 변수에 따라 심볼릭 링크의 대상을 자동으로 변경하는 'Conditional Symbolic Link' 기능을 가지고 있었다. 이 기능은 커널 내에 구현되었다.

2. 1. 심볼릭 링크의 저장 방식

초기 심볼릭 링크 구현 방식은 심볼릭 링크 정보를 일반 파일의 데이터로 저장했다. 이 파일은 링크 대상의 텍스트 참조를 포함하고, 파일 모드 비트를 통해 파일 유형이 심볼릭 링크임을 나타냈다.[5]

이 방식은 느리고 작은 시스템에서 디스크 공간을 비효율적으로 사용했기 때문에, '''빠른 심볼릭 링크'''라는 개선된 방식이 등장했다. 빠른 심볼릭 링크는 대상 경로를 아이노드 내에 저장한다. 아이노드는 디스크에 파일 정보를 저장하는 데 사용되는 데이터 구조로, 일반적으로 파일에 할당된 디스크 블록 주소 목록을 저장한다. 따라서 대상 경로가 짧은 심볼릭 링크는 빠르게 접근할 수 있다. 빠른 심볼릭 링크를 사용하는 시스템은 대상 경로가 아이노드 공간을 초과하면 원래 방식(소급하여 '''느린 심볼릭 링크'''라고 불림)으로 되돌아가기도 한다. 원래 스타일은 다른 운영 체제 또는 이전 버전과의 디스크 호환성을 위해 사용되기도 한다.[5]

링크 값을 아이노드에 저장하면 디스크 블록과 디스크 읽기를 절약할 수 있지만, 운영 체제는 여전히 링크의 경로 이름을 구문 분석해야 한다. 이는 추가 아이노드를 읽고, 일반적으로 다른 많은 디렉터리를 읽어야 하며, 링크의 경로 구성 요소와 일치하는 것을 찾을 때까지 각 파일의 파일 목록과 아이노드를 처리해야 함을 의미한다. "빠른 심볼릭 링크"는 링크가 동일한 디렉터리에 있는 파일을 가리키는 경우에만 다른 심볼릭 링크보다 훨씬 더 나은 성능을 제공한다.[5]

대부분의 POSIX 호환 구현은 빠른 심볼릭 링크를 사용한다. 그러나 POSIX 표준은 일반 파일에 공통적인 전체 파일 상태 정보를 심볼릭 링크에 구현하도록 요구하지 않는다. 이는 구현에서 심볼릭 링크 데이터를 디렉터리 항목에 저장하는 등 다른 솔루션을 사용할 수 있도록 한다.[5]

심볼릭 링크의 파일 시스템 권한은 사용되지 않으며, 대상 파일의 접근 모드는 대상 파일 자체의 권한에 의해 제어된다. FreeBSD와 같은 일부 운영 체제는 lchmod[12]lchflags[13] 시스템 호출을 통해 심볼릭 링크의 파일 권한 및 파일 시스템 속성을 수정할 수 있는 기능을 제공한다.[5]

심볼릭 링크의 보고된 크기는 링크가 가리키는 경로의 문자 수이다.[5]

2. 2. 심볼릭 링크와 오류 처리

심볼릭 링크는 파일 시스템에 루프를 생성할 수 있기 때문에, 셸 및 백업 유틸리티와 같이 심볼릭 링크를 특별히 처리해야 하는 프로그램은 이를 직접 식별하고 조작해야 한다.[5] 전통적인 유닉스 파일 시스템은 트리 구조를 가지지만, 심볼릭 링크를 사용하면 루프를 포함할 수 있다.[5]

3. 마이크로소프트 윈도우

마이크로소프트 윈도우는 심볼릭 링크, 정션 포인트, 바로 가기 등 여러 종류의 링크 기능을 제공한다.


  • NTFS 심볼릭 링크: 윈도우 XP에서 도입되었으며, 윈도우 비스타 이후 사용자 모드 애플리케이션에서도 지원된다. 명령 프롬프트의 `mklink` 명령으로 생성할 수 있다. 파일뿐만 아니라 원격 서버 메시지 블록(SMB) 네트워크 경로도 가리킬 수 있으며, 교차 파일 시스템 링크도 지원한다.[15] POSIX 운영 체제와의 호환성을 위해 설계되었지만, 몇 가지 차이점이 있다. 예를 들어, 윈도우 비스타에서는 심볼릭 링크를 만들 때 파일인지 디렉터리인지 수동으로 지정해야 한다.[17]
  • NTFS 정션 포인트: 윈도우 2000에서 NTFS 재분석 지점의 일부로 도입되었다. 로컬 디렉터리에만 적용되며, 원격 공유에는 사용할 수 없다.[20] 윈도우 2000 및 XP 리소스 키트에는 `linkd`라는 생성 프로그램이 포함되어 있으며, Sysinternals의 ''Junction''이라는 프로그램도 있다.
  • 바로 가기: 윈도우 셸에서 지원되며, 심볼릭 링크와 유사하지만 파일 시스템에 의해 자동으로 해결되지 않는다. 윈도우 셸과 파일 브라우저와 같은 특정 프로그램에서만 참조로 처리된다. 대상이 이동되거나 이름이 변경되어도 참조를 유지하는 기능이 있다.[22]
  • 셸 객체: 윈도우 레지스트리에 정의되며, 일종의 심볼릭 링크를 구현하는 데 사용될 수 있다. '내 문서', '글꼴', '관리 도구' 폴더 등이 셸 객체를 통해 파일 시스템 폴더로 리디렉션된 예시이다.


윈도우에서 심볼릭 링크와 정션은 파일 시스템 수준에서 처리되는 소프트 링크인 반면, 바로가기는 윈도우 셸에서 처리되는 기능이다. 바로가기는 대상 파일이 이동해도 추적할 수 있지만, 파일 시스템 수준에서 처리되지 않아 일부 프로그램에서 인식하지 못할 수 있다.

Windows 2000 이후 분산 링크 추적(Distributed Link Tracking) 서비스를 활성화하면, 파일에 객체 ID라는 고유 ID가 부여되어 Windows 도메인 내 NTFS 볼륨 상에서 이동하더라도 추적할 수 있다.

파일 시스템에 리파스 포인트 기능이 추가되면서 윈도우 2000에 채택된 NTFS 3.0 이후에는 정션이, Windows Vista 이후에는 심볼릭 링크를 사용할 수 있게 되었다.[36] 정션은 폴더(또는 드라이브)에 대한 소프트 링크로, 대상 경로가 적힌 파일인 바로 가기와 달리 명령줄에서 실제 폴더나 드라이브처럼 취급된다. 심볼릭 링크는 정션을 발전시켜 상대 경로 또는 네트워크 경로로 링크를 생성할 수 있다(단, 디스크 볼륨은 제외되며 파일 및 폴더에 한정). Windows Vista 이전에는 리파스 포인트를 다루는 명령어가 없었지만, Windows Vista 이후 `mklink` 명령어로 생성할 수 있게 되었다.[36]

3. 1. 윈도우 심볼릭 링크

윈도우 비스타, 윈도우 7, 윈도우 8 이상의 운영 체제는 명령 줄 유틸리티 `mklink`를 사용하여 파일과 디렉터리에 대한 심볼릭 링크를 지원한다.[39] 정션 포인트와 달리 심볼릭 링크는 파일이나 원격 서버 메시지 블록(SMB) 네트워크 경로를 가리킬 수도 있다. NTFS 심볼릭 링크는 파일 시스템 간 연결을 완전히 지원하지만, 호스트 간 심볼릭 링크를 활성화하려면 원격 시스템에서도 이를 지원해야 하며, 이는 윈도우 비스타 이후 버전으로 한정된다.

심볼릭 링크는 POSIX 운영 체제와의 마이그레이션 및 애플리케이션 호환성을 돕기 위해 설계되었다. 마이크로소프트는 윈도우 비스타의 심볼릭 링크가 "유닉스 링크처럼 작동"하도록 목표했다.[16] 그러나 구현 방식은 여러 면에서 유닉스 심볼릭 링크와 다르다. 예를 들어, 윈도우 비스타 사용자는 심볼릭 링크를 만들 때 파일인지 디렉터리인지 수동으로 지정해야 한다.[17] 또한 윈도우 비스타는 단일 경로에 최대 31개의 심볼릭 링크를 허용한다.[18] 기본적으로 관리자 권한을 가진 사용자만 심볼릭 링크를 만들 수 있으며, "심볼릭 링크 만들기" 권한은 로컬 보안 정책 관리 콘솔에서 변경할 수 있다.[19]

윈도우 비스타, 윈도우 7, 윈도우 8에서 작업 디렉터리 경로가 심볼릭 링크로 끝날 때, 현재 부모 경로 참조인 '''..'''는 대상 경로가 아닌 심볼릭 링크의 부모 경로를 가리킨다. 이는 리눅스 등 일부 POSIX 시스템의 셸 수준에서는 볼 수 있지만, 운영 체제 호출을 통한 파일 및 디렉터리 접근에서는 나타나지 않는다. 예를 들어, bash 내장 명령 'pwd'와 'cd'는 현재 논리 디렉터리에서 작동하며, '/bin/pwd'는 스크립트에서 실제 작업 디렉터리를 결정하는 데 사용된다. 시스템 호출과 함께 경로를 사용할 때 '..'를 사용하면 '..' 가상 디렉터리 엔트리를 포함하는 디렉터리의 실제 파일 시스템 부모를 사용하게 된다. 따라서 "cd ..; cat 특정_항목"과 "cat ../특정_항목"을 입력했을 때 결과는 완전히 다를 수 있다.

Windows 2000 이후 분산 링크 추적(Distributed Link Tracking) 서비스를 활성화하면, 파일에 객체 ID라는 고유 ID가 부여되어 Windows 도메인 내 NTFS 볼륨 상에서 이동하더라도 추적할 수 있다.

Windows 2000에 채택된 NTFS 3.0 이후 파일 시스템에 리파스 포인트 기능이 추가되어 정션 및 Windows Vista 이후 심볼릭 링크를 사용할 수 있게 되었다.[36] 정션은 폴더(또는 드라이브)에 대한 소프트 링크로, 대상 경로가 적힌 파일인 바로 가기와 달리 명령줄에서 실제 폴더나 드라이브처럼 취급된다. 심볼릭 링크는 정션을 발전시켜 상대 경로 또는 네트워크 경로로 링크를 생성할 수 있다(단, 디스크 볼륨은 제외되며 파일 및 폴더에 한정). Windows Vista 이전에는 리파스 포인트를 다루는 명령어가 없었지만, Windows Vista 이후 `mklink` 명령어로 생성할 수 있게 되었다.[36]

3. 2. NTFS 정션 포인트

윈도우 2000 버전의 NTFS는 NTFS 재분석 지점을 도입했는데, 이는 특히 볼륨 마운트 지점과 정션 포인트의 사용을 가능하게 했다. 정션 포인트는 디렉터리에만 해당하며, 로컬 디렉터리에만 만들 수 있다. 원격 공유에 대한 정션 포인트는 지원되지 않는다.[20] 윈도우 2000 및 XP 리소스 키트에는 정션 포인트를 생성하는 ''linkd''라는 프로그램이 포함되어 있으며, Sysinternals의 마크 러시노비치가 배포한 ''Junction''이라는 더 강력한 프로그램도 있다.

모든 표준 애플리케이션이 재분석 지점을 지원하는 것은 아니다. 특히, 백업은 이 문제로 인해 백업할 폴더에 재분석 지점이 포함된 경우 오류 메시지 0x80070003[21]을 표시한다.

3. 3. 바로 가기 (.lnk)

윈도우에서 널리 사용되는 바로 가기(`.lnk`)는 파일 시스템이 아닌 윈도우 에서 처리되는 기능이다. 심볼릭 링크와 달리 대상 파일이 이동해도 추적할 수 있다는 장점이 있지만,[22] 파일 시스템 수준에서 처리되지 않기 때문에 일부 프로그램에서는 인식하지 못할 수 있다.

바로 가기는 윈도우 셸과 파일 브라우저와 같이 바로 가기를 이해하는 소프트웨어 프로그램에서만 다른 파일에 대한 참조로 처리된다. 파일 시스템과 바로가기를 인식하지 못하는 소프트웨어는 바로가기를 일반 파일처럼 취급한다.[24]

윈도우 바로 가기는 대상과 연결될 수 있는 추가 메타데이터를 포함할 수 있는 반면, POSIX 심볼릭 링크는 절대 또는 상대 경로 이름으로 해석될 문자열일 뿐이다. 또한, 윈도우 바로가기는 대상이 이동되거나 이름이 변경되어도 참조를 유지한다.[23] Windows 2000 이후의 Distributed Link Tracking 서비스를 활성화한 환경에서는 파일에 객체 ID라는 고유한 ID가 부여되어, Windows 도메인 내의 NTFS 볼륨 상에 있는 한, 어디로 이동해도 확실하게 추적할 수 있다.

바로 가기 파일의 파일 확장자는 `.lnk`이지만, MS-DOS 프로그램에 대한 바로 가기는 확장자 `.pif`의 특별한 파일 형식이 된다. 또한 Windows 98 이후에는 바로 가기를 새로 생성하는 위저드에서 경로 대신 URL을 입력하면 인터넷 바로 가기 (확장자 `.url`)가 생성된다.

3. 4. 셸 객체

셸 개체[26] 또는 셸 폴더는 윈도우 레지스트리에 정의되어 있으며 일종의 심볼릭 링크를 구현하는 데에도 사용할 수 있다. 폴더 바로가기와 마찬가지로 윈도우 셸에 투명하게 나타난다.

'내 문서' 폴더가 '바탕 화면'에 있고, '글꼴' 폴더와 '관리 도구' 폴더가 '제어판'에 있는 것이 셸 개체가 파일 시스템 폴더로 리디렉션된 예시이다.

3. 5. Cygwin 심볼릭 링크

Cygwin은 마이크로소프트 윈도우에서 POSIX 호환 심볼릭 링크를 시뮬레이션한다. 유닉스와 동일한 프로그래밍 및 사용자 유틸리티 인터페이스를 사용하지만(위 참조), 심볼릭 링크를 해석할 때 Cygwin에서 사용하는 추가 정보가 포함된 윈도우 바로가기(.lnk 파일)를 생성한다. Cygwin 심볼릭 링크는 해석 방식 측면에서 POSIX 표준을 준수하며, 디스크 내 표현 방식 측면에서는 윈도우 표준을 준수한다.[27]

또한 Cygwin은 제한 없이 Cygwin 외부에서 사용할 수 있는 네이티브 윈도우 심볼릭 링크를 지원하도록 설정할 수 있다.[27] 이를 위해서는 다음이 필요하다.

  • CYGWIN 환경 변수를 `winsymlinks:native`을 포함하도록 변경.
  • 윈도우는 심볼릭 링크 생성을 권한 있는 사용자로 제한하므로, 관리자 권한으로 Cygwin 실행.


하지만 몇 가지 차이점이 있다. Cygwin은 작업 디렉터리 또는 아이콘과 같은 바로가기 관련 정보를 지정할 방법이 없다. 이러한 매개변수를 `ln -s` 명령어에 넣을 공간이 없기 때문이다. 표준 Microsoft .lnk 파일을 생성하기 위해 Cygwin은 `mkshortcut` 및 `readshortcut` 유틸리티를 제공한다.[28]

Cygwin 사용자 가이드에서 이 주제에 대한 자세한 정보를 확인할 수 있다.[27] Cygwin을 기반으로 하는 MSYS2는 유사한 `winsymlinks` 설정을 가지고 있지만, 기본적으로 파일을 복사한다.[29]

4. POSIX와 윈도우 심볼릭 링크 비교

(관리자 권한 필요)아니오예폴더예아니오유닉스파일예해당되지 않음예디렉터리예해당되지 않음아니오

5. 기타 운영 체제

MIT의 호환 시분할 시스템(CTSS)과 비호환 시분할 시스템(ITS)에는 대상 파일의 이름이 지정된 링크된 파일이 있었다.[2][3][4]

Amiga에서는 `makelink` 명령을 사용하여 심볼릭 링크와 하드 링크를 모두 생성했다.[1] AmigaDOS 셸은 링크를 자동으로 따라간다.[1]

macOS에서 '에일리어스'는 대상 파일이 같은 볼륨 내 다른 위치로 이동하더라도 대상을 추적하는 고급 심볼릭 링크이다. 이는 셸 명령 "별칭"과는 다르다. 클래식 Mac OS 및 macOS의 에일리어스는 에일리어스 레코드라는 파일 고유의 참조 정보를 저장하여, 링크 대상 파일(원본)이 이동되거나 이름이 변경되어도 자동으로 대상을 추적한다. 단, 대상 파일이 휴지통이나 응용 프로그램 패키지에 있거나, 삽입되지 않은 이동식 미디어에 있거나, 삭제된 경우에는 링크가 끊어진다.[1]

OS/2의 섀도는 심볼릭 링크와 유사하지만, 완전 객체 지향 시스템 객체 모델로 인해 더 강력하고 견고하다. 섀도는 이름을 바꾸거나 링크의 객체 또는 주체가 재배치될 때 기능이 손실되지 않는다.[31]

BTRON의 『가신(假身)』은 개념상 소프트 링크와 유사하지만, 사용자가 직접 파일 본체인 『실신(實身)』에 접근할 수는 없다. 가신은 가상 파일 아이콘으로 자유롭게 복제 가능하나, 전부 삭제하면 파일 본체가 삭제된다. 가신은 OS의 기본 구성 요소이며, 텍스트, 계산표, 데이터베이스 등 BTRON OS에서 편집 가능한 파일의 모든 위치에 부착물 형태로 삽입할 수 있다.

5. 1. 초기 MIT 시스템

MIT 호환 시분할 시스템(Compatible Time-Sharing System, CTSS)과 비호환 시분할 시스템(Incompatible Timesharing System, ITS)은 모두 디렉터리 항목에 대상 파일의 이름이 지정된 링크된 파일을 가지고 있었다.[2][3][4]

5. 2. Amiga

`makelink` 명령을 사용하여 심볼릭 링크와 하드 링크를 모두 생성했다.[1] 내부적으로 dos.library는 대상이 소프트 링크임을 나타내는 오류 코드를 반환하며, 이는 파일에만 유효한 작업을 해당 링크에 시도할 경우 발생한다.[1] 따라서 심볼릭 링크를 따라가려는 애플리케이션은 명시적으로 링크를 따라가는 호출을 한 후 작업을 다시 시도해야 한다.[1] AmigaDOS 셸은 링크를 자동으로 따라간다.[1]

5. 3. macOS

macOS에서 응용 프로그램이나 사용자는 '에일리어스'라는 기능을 사용할 수 있는데, 이는 대상 파일이 같은 볼륨 내 다른 위치로 이동하더라도 대상을 추적하는 고급 심볼릭 링크이다. 이는 셸 명령 "별칭"과는 다른 개념이다.

클래식 Mac OS 및 macOS의 에일리어스는 다른 운영체제보다 발전된 형태로, 에일리어스 레코드라는 파일 고유의 참조 정보를 저장한다. 이를 통해 링크 대상 파일(원본)이 이동되거나 파일 이름이 변경되어도 자동으로 이동 대상을 추적하여 항상 유효성을 유지한다. 플로피 디스크에 대한 링크의 경우, 네트워크 상의 컴퓨터 중 하나에 삽입되어 있으면 이를 감지하여 열 수 있다. 다만, 링크 대상 파일이 휴지통이나 응용 프로그램 패키지에 있거나, 삽입되지 않은 이동식 미디어에 있거나, 삭제된 경우에는 링크가 끊어진다.[1]

Classic OS에서는 에일리어스 레코드가 파일 정보를 유지하는 것이 일반적이었다. 이를 통해 편집 중인 파일을 이동해도 추적하여 오류 처리 없이 이동 대상에 정상적으로 저장하는 등, 매우 자유로운 파일 처리가 가능했다. 그러나 macOS에서는 이러한 자유로운 파일 처리는 Finder, Carbon, Classic 응용 프로그램과 같은 일부 예외를 제외하고는 작동하지 않는다.[2]

5. 4. OS/2

OS/2 운영 체제에서 심볼릭 링크는 그래픽 워크플레이스 셸의 섀도와 다소 유사하다. 그러나 섀도는 완전 객체 지향 시스템 객체 모델로 인해 단순한 링크보다 훨씬 강력하고 견고하다. 예를 들어 섀도는 이름을 바꾸거나 링크의 객체 또는 주체가 재배치될 때 기능이 손실되지 않는다.[31]

5. 5. BTRON

BTRON의 『가신(假身)』은 개념상 소프트 링크와 유사하다. 그러나 사용자가 직접 파일 본체인 『실신(實身)』에 접근할 수는 없다. 가신은 가상 파일 아이콘으로 자유롭게 복제할 수 있지만, 전부 삭제하는 것은 파일 본체의 삭제와 같다. 즉, 모든 것은 가신을 통해서만 접근된다는 점이 다른 OS와 다르다. 또한 가신은 OS의 기본 구성 요소이며, 텍스트, 계산표, 데이터베이스 등 BTRON OS에서 편집 가능한 파일의 모든 위치에 부착물 형태로 삽입할 수 있다. 이 메커니즘을 통해, 아주 일반적인 파일 조작 및 편집이 그대로 하이퍼링크 편집이 되는 사용자 인터페이스를 실현하고 있다.

6. 가변 심볼릭 링크

가변 심볼릭 링크는 구성 매개변수, 런타임 매개변수 등 조건에 따라 링크 대상이 달라지는 심볼릭 링크이다. 이름에 변수가 내장되어 있어 표준 심볼릭 링크로는 불가능한 파일 시스템 순서의 유연성을 제공한다. 심볼릭 링크에 내장된 변수는 사용자 및 환경 특정 정보를 포함할 수 있다.[32][33][5]

NetBSD, DragonFly BSD, Domain/OS 등의 운영 체제에서 가변 심볼릭 링크를 사용한다.[32][33][5] Tru64는 컨텍스트가 클러스터 멤버 번호인 문맥 종속 심볼릭 링크를 사용한다.

Pyramid Technology의 OSx 운영 체제는 프로그램이 실행되는 universe에 따라 다른 위치를 가리키는 조건부 심볼릭 링크를 구현했다. 예를 들어, ps 명령이 ''att'' universe에서 실행되면 ''/bin''에 대한 심볼릭 링크는 ''/.attbin''을 가리키고, ''ucb'' universe에서 실행되면 ''/bin''은 ''/.ucbbin''을 가리키는 방식이었다.[34]

NEWS-OS(en)는 환경 변수나 커널 변수에 의해 심볼릭 링크의 링크 대상을 자동으로 변화시키는 Conditional Symbolic Link라는 기능을 가지고 있었다.

참조

[1] POSIX Pathname resolution https://www.opengrou[...]
[2] 웹사이트 Compatible Time-Sharing System (1961-1973): Fiftieth Anniversary Commemorative Overview https://multicians.o[...] IEEE Computer Society 2022-02-20
[3] 웹사이트 The Compatible Time-Sharing System, A Programmer's Guide http://www.bitsavers[...] The M.I.T Computation Center 2022-03-10
[4] 웹사이트 The Compatible Time-Sharing System A Programmer's Guide https://www.ibiblio.[...] MIT 2022-11-29
[5] 간행물 Lexical file names in Plan 9 or getting dot-dot right https://static.useni[...]
[6] IEEE symlink, symlinkat https://pubs.opengro[...] 2013
[7] IEEE link, linkat https://pubs.opengro[...] 2013
[8] 웹사이트 Surviving with 4.1a bsd https://github.com/d[...] 2023-09-08
[9] IEEE fstatat, lstat, stat - get file status https://pubs.opengro[...] 2013
[10] IEEE lchown - change the owner and group of a symbolic link https://pubs.opengro[...] 2013
[11] IEEE readlink, readlinkat - read the contents of a symbolic link https://pubs.opengro[...] 2013
[12] 웹사이트 lchmod(2) https://www.freebsd.[...]
[13] 웹사이트 lchflags(2) https://www.freebsd.[...]
[14] 학술지 The UNIX Time-Sharing System 1978-07
[15] 웹사이트 Link Shell Extension website https://schinagl.pri[...]
[16] MSDN Symbolic Links https://msdn.microso[...] 2008-01-18
[17] 웹사이트 CreateSymbolicLinkA function (winbase.h) https://msdn.microso[...] 2023-06
[18] MSDN Symbolic Link Programming Considerations https://msdn.microso[...]
[19] Technet Inside the Windows Vista Kernel: Part 1 https://www.microsof[...] Microsoft Technet 2007-02
[20] 웹사이트 Sysinternals Junction documentation https://www.microsof[...] 2018-03-23
[21] 웹사이트 Windows backup or restore errors 0x80070001, 0x81000037, or 0x80070003 https://support.micr[...]
[22] 웹사이트 Distributed Link Tracking on domain controllers - Windows Server https://learn.micros[...] 2023-02-23
[23] 웹사이트 Distributed Link Tracking and Object Identifiers https://msdn.microso[...] Microsoft Corporation 2011-06-30
[24] 웹사이트 Specifying a Namespace Extension's Location https://msdn.microso[...] 2018-03-23
[25] 웹사이트 You cannot view or change the Read-only or the System attributes of folders in Windows Server 2003, in Windows XP, in Windows Vista or in Windows 7 https://support.micr[...] 2021-07-08
[26] MSDN Creating Shell Extensions with Shell Instance Objects https://msdn.microso[...]
[27] 웹사이트 Chapter 3. Using Cygwin https://www.cygwin.c[...] 2021-07-08
[28] 웹사이트 Using Cygwin effectively with Windows https://www.cygwin.c[...]
[29] 웹사이트 Coreutils: ln --symbolic creates hard links (MSYS2-packages #249) https://github.com/m[...]
[30] 웹사이트 Create symbolic links https://learn.micros[...] Microsoft 2023-01-18
[31] 뉴스 Cómo ejecutar versiones de Python diferentes a las predeterminadas https://manualestuto[...] 2020-12-20
[32] Man magic symlinks NetBSD
[33] 웹사이트 Variant symbolic links for FreeBSD https://wiki.freebsd[...] 2008
[34] 웹사이트 A case for variant symlinks https://lwn.net/Arti[...] 2016
[35] 웹사이트 シンボリックリンクとは - IT用語辞典 https://e-words.jp/w[...] 2024-03-12
[36] 웹사이트 Windowsのシンボリックリンクとジャンクションとハードリンクの違い https://atmarkit.itm[...] 2024-03-12
[37] 간행물 1990 年度 WIDE 報告書 http://www.wide.ad.j[...] 1990
[38] POSIX Pathname resolution http://www.opengroup[...]
[39] MSDN Library Symbolic Links http://msdn2.microso[...] Win32 and COM Development 2008-01-18
[40] MSDN Library CreateSymbolicLink Function http://msdn2.microso[...] Win32 and COM Development
[41] MSDN Symbolic Link Programming Considerations http://msdn.microsof[...]
[42] Microsoft Technet Inside the Windows Vista Kernel: Part 1 Microsoft Technet 2007-02
[43] 웹사이트 Link Shell Extension website http://schinagl.priv[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com